<#include "/@inc/funcMacros.ftl">
<#assign className = TriaGram + "E" + Prefix + LateType + "ReplaceUI">
<#assign baseName = TriaGram + Prefix + LateType>
<#assign intfName = TriaGram + "I" + Prefix + LateType>
<#include "/@inc/copyright.txt">
<@pp.renameOutputFile name=className +".h">
</@pp.renameOutputFile>
#ifndef __${className}_H
#define __${className}_H
<#include "/@inc/copyright.txt">

//===========================================================================
//  Abstract of the class:
//  ----------------------
//
//  Data extension implementing the CATIReplaceUI interface
//  which manages the depth of a given Selection Path.

//  This extension extends the ${LateType} Feature.
//
//===========================================================================

// ObjectSpecsModeler Framework
#include "CATBaseUnknown.h"

// System Framework
class CATUnicodeString ;

// Visualization Framework
class CATPathElement;            // To handle Object Selection

class ${className} : public CATBaseUnknown
{
   CATDeclareClass;

 public :

   ${className}();
   virtual ~${className}();


   HRESULT FindValidElementForReplace(const CATUnicodeString& iRole,
                                      const CATPathElement* ipSelection,
                                      const CATBaseUnknown* ipOldValue,
                                      CATBaseUnknown*& opFoundElement);
 private:

    // Copy constructor, not implemented
    // Set as private to prevent from compiler automatic creation as public.
    ${className}(const ${className} &iObjectToCopy);

    // Assignment operator, not implemented
    // Set as private to prevent from compiler automatic creation as public.
    ${className} & operator = (const ${className} &iObjectToCopy);



};

#endif
